package org.walkerljl.commons.redis;

import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * RedisClient
 *
 * @author lijunlin
 * @Date 2016/12/5
 */
public interface RedisClient {

    String getKeyPrefix();

    // string
    String get(String key);

    List<String> mGet(String... keys);

    String getSet(String key, String value);

    boolean expire(String key, long ttl, TimeUnit timeUnit);

    boolean exists(String key);

    Long del(String key);

    void setEx(String key, String value, long ttl, TimeUnit timeUnit);

    boolean setNx(String key, String value);

    Long incr(String key);

    Long decr(String key);

    Long incrBy(String key, long amount);

    Double incrBy(String key, double amount);

    // hash
    String hGet(String key, String field);

    Map<String, String> hGetAll(String key);

    void hMSet(String key, Map<String, String> fieldValueMap);

    boolean hSet(String key, String field, String value);

    Long hDel(String key, String... fields);

    Long hLen(String key);

    Long hIncrBy(String key, String field, Long quantities);

    // set
    Long sAdd(String key, String... values);

    Long sRem(String key, String... values);

    // list
    String rPop(String key);

    void lPush(String key, String... value);

    String sPop(String key);
}
